package com.jic.market.api.manage;

import com.jic.common.base.vo.PageResult;
import com.jic.common.base.vo.RestResult;
import com.jic.market.request.CouponDetailRequest;
import com.jic.market.request.manager.base.CheckRequest;
import com.jic.market.request.manager.base.MerchantDeleteRequest;
import com.jic.market.request.manager.base.PromotionIdRequest;
import com.jic.market.request.manager.base.StoreDeleteRequest;
import com.jic.market.request.manager.coupon.CouponTemplatRequest;
import com.jic.market.request.manager.fullnum.*;
import com.jic.market.request.manager.skill.SkillBatchDeleteRequest;
import com.jic.market.request.manager.skill.SkillCheckRequest;
import com.jic.market.request.manager.skill.SkillConfigQueryPageRequest;
import com.jic.market.request.manager.skill.SkillConfigUpdateaRequest;
import com.jic.market.request.manager.skill.SkillDeleteTimeOfDateRequest;
import com.jic.market.request.manager.skill.SkillGoodsDeleteRequest;
import com.jic.market.request.manager.skill.SkillGoodsRequest;
import com.jic.market.request.manager.skill.SkillImagesUrlUpdateRequest;
import com.jic.market.request.manager.skill.SkillMerchantAddRequest;
import com.jic.market.request.manager.skill.SkillStoreAddRequest;
import com.jic.market.response.manager.base.BaseActivityResponse;
import com.jic.market.response.manager.fullnum.FullNumConfigQueryResponse;
import com.jic.market.response.manager.fullnum.FullNumCouponQueryResponse;
import com.jic.market.response.manager.fullnum.FullNumGoodsQueryResponse;
import com.jic.market.response.manager.fullnum.FullNumMerchantResponse;
import com.jic.market.response.manager.fullnum.FullNumStoreQueryResponse;
import com.jic.market.response.manager.fullnum.FullNumStoreResponse;
import com.jic.market.response.manager.skill.SkillConfigQueryResponse;
import com.jic.market.response.manager.skill.SkillGoodsQueryResponse;
import com.jic.market.response.manager.skill.SkillMerchantResponse;
import com.jic.market.response.manager.skill.SkillStoreQueryResponse;
import com.jic.market.response.manager.skill.SkillStoreResponse;
import com.jic.market.response.manager.skill.SkillTimeQueryResponse;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @author: gaolanyu
 * @date: 2020-03-12
 * @remark: 不想再理之前逻辑，太影响时间
 */
@FeignClient(name = "jic-market", path = "/full-num")
public interface FullNumManageApi {
    @PostMapping("/add-config")
    RestResult<String> addFullNumConfig(@RequestBody FullNumConfigAddRequest fullNameConfigAddRequest);

    @PostMapping("/query-config")
    RestResult<FullNumConfigQueryResponse> queryFullNumConfig(@RequestBody PromotionIdRequest promotionIdRequest);

    @PostMapping("/query-config-page")
    RestResult<PageResult<BaseActivityResponse>> queryFullNumConfigPage(@RequestBody FullNumConfigQueryPageRequest fullNumConfigQueryPageRequest);

    @PostMapping("/update-config")
    RestResult<Boolean> updateFullNumConfig(@RequestBody FullNumConfigUpdateaRequest fullNumConfigUpdateaRequest);

    @PostMapping("/copy-config")
    RestResult<String> copyFullNumConfig(@RequestBody PromotionIdRequest promotionIdRequest);

    @PostMapping("/close-config")
    RestResult<Boolean> colseFullNumConfig(@RequestBody PromotionIdRequest promotionIdRequest);

    @PostMapping("/delete-config")
    RestResult<Boolean> deleteFullNumConfig(@RequestBody PromotionIdRequest promotionIdRequest);

    @PostMapping("/add-merchant")
    RestResult<Boolean> addFullNumMerchantConfig(@RequestBody FullNumMerchantAddRequest fullNumMerchantAddRequest);

    @PostMapping("/query-merchant")
    RestResult<FullNumMerchantResponse> queryFullNumMerchant(@RequestBody CouponDetailRequest promotionIdRequest);

    @PostMapping("/delete-merchant")
    RestResult<Boolean> deleteFullNumMerchant(@RequestBody MerchantDeleteRequest merchantDeleteRequest);

    @PostMapping("/add-store")
    RestResult<Boolean> addFullNumStoreConfig(@RequestBody FullNumStoreAddRequest fullNumStoreAddRequest);

    @PostMapping("/query-store")
    RestResult<FullNumStoreResponse> queryFullNumStore(@RequestBody CouponDetailRequest promotionIdRequest);

    @PostMapping("/delete-store")
    RestResult<Boolean> deleteFullNumStore(@RequestBody StoreDeleteRequest storeDeleteRequest);

    @PostMapping("/query-coupon-range")
    RestResult<FullNumCouponQueryResponse> queryCouponRange(@RequestBody PromotionIdRequest promotionIdRequest);

    @PostMapping("/delete-coupon-range")
    RestResult<Boolean> deleteCouponRange(@RequestBody FullNumDeleteCouponRangeRequest fullNumDeleteCouponRangeRequest);

    @PostMapping("/query-store-id")
    RestResult<FullNumStoreQueryResponse> queryStoreInfo(@RequestBody PromotionIdRequest promotionIdRequest);

    @PostMapping("/add-goods")
    RestResult<Boolean> addGoodsConfig(@RequestBody FullNumGoodsIdsRequest fullNumGoodsRequest);

    @PostMapping("/add-all-goods")
    RestResult<Boolean> addAllGoodsConfig(@RequestBody FullNumGoodsIdsRequest fullNumGoodsRequest);

    @PostMapping("/update-goods")
    RestResult<Boolean> updateGoodsConfig(@RequestBody FullNumGoodsRequest fullNumGoodsRequest);

    @PostMapping("/delete-goods")
    RestResult<Boolean> deleteGoods(@RequestBody FullNumGoodsDeleteRequest fullNumGoodsDeleteRequest);

    @PostMapping("/delete-batch-goods")
    RestResult<Boolean> deleteBatchGoods(@RequestBody FullNumBatchDeleteRequest fullNumBatchDeleteRequest);

    @PostMapping("/query-goods")
    RestResult<FullNumGoodsQueryResponse> queryGoodsId(@RequestBody PromotionIdRequest promotionIdRequest);

    @PostMapping("/check-fullnum")
    RestResult<Boolean> checkCoupon(@RequestBody CheckRequest checkRequest);

    @PostMapping("/save-template")
    RestResult<String> saveTemplate(@RequestBody CouponTemplatRequest couponTemplatRequest);

}
